<?php

/**
 * solicitudes actions.
 *
 * @package    comande
 * @subpackage solicitudes
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class solicitudesActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
   public function preExecute()
  {
     if(sfConfig::get('app_domain')=='server')
     {
          $simpleSAMLAuth = new SimpleSAML_Auth_Simple('default-sp');
          if (!$simpleSAMLAuth->isAuthenticated())
          {
               return $this->redirect('saml/logout');
          }
     }    

  }
  
  public function executeIndex(sfWebRequest $request)
  {
   //obtengo el id local de usuario
   $id_sesion_local_user = $this->getUser()->getAttribute('ses_user_id');

   //----> busco si el usuario tiene alguna solicitud
  //-> busco el email
   $new_criteria = new Criteria();
   $new_criteria->add(UsuarioPeer::ID,$id_sesion_local_user);

   //verifico el email
   $new_objeto = UsuarioPeer::doSelectOne($new_criteria);
   if(is_object($new_objeto)){ //---> verifico si existe objeto
       //obtengo email
       $email = $new_objeto->getEmail();

       //busco en las solicitudes
       $new_criteria->clear();
       $new_criteria->add(SolicitudesPeer::EMAIL_USER, $email);
       $new_criteria->add(SolicitudesPeer::ESTADO,"0");
       $obj_solicitud = SolicitudesPeer::doSelectOne($new_criteria);

       if(is_object($obj_solicitud)){///--> si tiene solicitud

           //obtener el usuario lider
           $new_criteria->clear();
           $new_criteria->add(UsuarioPeer::ID,$obj_solicitud->getUsuarioId() );
           $usuario_lider = UsuarioPeer::doSelectOne($new_criteria);
           if(is_object($usuario_lider)){
               $this->boss_user =  $usuario_lider;
               $this->solicitud = $obj_solicitud;
           }else{
               $his->boss_user =  null;
               $this->solicitud = null;
           }

           
           

       }else{ //--> si no tiene solicitar
    $his->boss_user =  null;
           $this->solicitud = null;
       }
 }else{
       $his->boss_user =  null;
     $this->solicitud = null;
   }

  }

  public function executeRespuesta(sfWebRequest $request)
  {
     //recibo paramatro de respuesta
     $respuesta = $request->getParameter('respt');
     $fecha = time("d/m/a");
             //obtengo el id local de usuario
     $id_sesion_local_user = $this->getUser()->getAttribute('ses_user_id');

       //----> busco si el usuario tiene alguna solicitud
       //-> busco el email
       $new_criteria = new Criteria();
       $new_criteria->add(UsuarioPeer::ID,$id_sesion_local_user);

       //verifico el email
       $new_objeto = UsuarioPeer::doSelectOne($new_criteria);
   
     if($respuesta == "1"){ //---> acepta
          
       if(is_object($new_objeto)){

       //actualizo la solicitud
           $new_criteria->clear();
           $new_criteria->add(SolicitudesPeer::EMAIL_USER, $new_objeto->getEmail());
           $objeto_solicitud = SolicitudesPeer::doSelectOne($new_criteria);

       if(is_object($objeto_solicitud)){
        
           $objeto_solicitud->setFechaUpdate($fecha);
           $objeto_solicitud->setEstado("1"); //---> aceptado
           $objeto_solicitud->save();
           
       }else{
           $this->respuesta = "No existe solicitud";

       }

       //actualizo la tabla usuarios_monitoreados
           $new_criteria->clear();
           $new_criteria->add(UsuariosMonitoreadosPeer::EMAIL,$new_objeto->getEmail());
           $objeto_usuario_monitoreado = UsuariosMonitoreadosPeer::doSelectOne($new_criteria);
       if(is_object($objeto_usuario_monitoreado)){
                //actualizo la tabla usuarios monitoreados
           $objeto_usuario_monitoreado->setUsuarioId($new_objeto->getId());
           $objeto_usuario_monitoreado->setEstado("1");
           $objeto_usuario_monitoreado->save();
            $this->respuesta = "Solicitud Aceptada con exito!!";
       }else{
           $this->respuesta = "No existe usuario monitoreado";
       }

          

   }



     }else{ //---> no acepta
         if($respuesta == "2"){
             if(is_object($new_objeto)){

       //actualizo la solicitud
           $new_criteria->clear();
           $new_criteria->add(SolicitudesPeer::EMAIL_USER, $new_objeto->getEmail());
           $objeto_solicitud = SolicitudesPeer::doSelectOne($new_criteria);

           if(is_object($objeto_solicitud)){

                //-actualizo el estado de la solicitud
                   $objeto_solicitud->setFechaUpdate($fecha);
                   $objeto_solicitud->setEstado("2");
                   $objeto_solicitud->save();

                // elimino los registros del usuario monitireado
                   $new_criteria->clear();
                   $new_criteria->add(UsuariosMonitoreadosPeer::EMAIL,$new_objeto->getEmail() );

                   UsuariosMonitoreadosPeer::doDelete($new_criteria);
                    $this->respuesta = "Se elimino Solicitud";

               }else{
                   $this->respuesta = "No existe Solicitud!";
                   
               }

            }else{
                $this->respuesta = "Usuario No existe!";
            }
         
         }
         
      

     }


  }
}
